#define somenop {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();}
sbit TX = P1^0;  //
sbit RX = P1^1;  //

unsigned int distance;
unsigned int intr = 0;
bit s_flag;
unsigned int t = 0;

void send_wave(void);
void Timer0Init(void);
void Timer1Init(void);



//while1allinit()д
	Timer0Init();
        Timer1Init();

	EA = 1;
	ET0 = 1;  //򿪶ʱ0ж


//while1д
if(s_flag) // 200һ 
		{
			s_flag = 0;
			send_wave();  //ͷź
			TR1 = 1;  //ʱ
			while((RX == 1) && (TF1 == 0));  //ȴյ
			TR1 = 0;  //رռʱ		
			
			if(TF1 == 1)//
			{
				TF1 = 0;
				distance = 9999;  //޷
			}
			else
			{		
				t = TH1;// ʱ  
				t <<= 8;
				t |= TL1;
				distance = (unsigned int)(t*0.017);  //	
				distance = distance/12;
				//t*340   // t/1000000*340/2*100
			}
			TH1 = 0;
			TL1 = 0;
		}
		
		//ݴ  						 
		liu = distance/100;
		qi = distance%100/10;
		ba = distance%10; 



//Ӻ
void Timer0Init(void)		//2@11.0592MHz
{
	AUXR |= 0x80;		//ʱʱ1Tģʽ
	TMOD &= 0xF0;		//öʱģʽ
	TL0 = 0x9A;		//öʱֵ
	TH0 = 0xA9;		//öʱֵ
	TF0 = 0;		//TF0־
	TR0 = 1;		//ʱ0ʼʱ
}

void Timer1Init(void)		//2@11.0592MHz
{
	AUXR |= 0x40;		//ʱʱ1Tģʽ
	TMOD &= 0x0F;		//öʱģʽ
}

//ʱ0жϷ
void isr_timer_0(void)  interrupt 1  //Ĭжȼ 1
{
	TL0 = 0x9A;		//öʱֵ
	TH0 = 0xA9;		//öʱֵ

	if(++intr == 100)
	{
		s_flag = 1;
		intr = 0;
  }
}

//TXŷ40KHzź̽ͷ
//ʹʱעRCƵ
void send_wave(void)
{
	unsigned char i = 8;  //8
	
	do
	{
		TX = 1;
		somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;		
		TX = 0;
		somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;somenop;		
	}
	while(i--);
}